package main

import (
	"fmt"
	"strconv"
)

func main() {
	fmt.Printf("\n================= welcome to e-coupon =================\n\n")
	startNodeID, _ := strconv.Atoi(nodeStartNum)

	// 0 生成初始配置(配置一开始的委员会领导者)
	StartConfigs()

	// 1 生成节点数目的公私钥(持久化存储)
	for i := startNodeID; i < startNodeID+nodeNumber; i++ {
		NewWallet(strconv.Itoa(i))
	}

	// 2 每个节点初始化区块链(创世区块)
	for i := startNodeID; i < startNodeID+nodeNumber; i++ {
		InitialBlockChain(strconv.Itoa(i))
	}

	// 3 生成区块链对象(节点数目)，存入全局变量中 map[string]*BlockChain
	for i := startNodeID; i < startNodeID+nodeNumber; i++ { //
		NewBlockChain(strconv.Itoa(i)) // 创建区块链对象(直接在创建对象的时候添加到 currentNodeChainObj 中)
	}

	// 4 运行端口节点(每个节点初始化区块链对象)
	StartServer()

	// 阻塞
	var ch chan struct{}
	<-ch
}
